// reducer 用于计算最新的状态
/**
 * 通过这个纯函数可以计算出最新的状态
 * state：仓库数据，每次会传入上一次的数据
 * action：描述对象 {type:ADD,data:'学习redux'}
 * 描述对象描述了我要做什么以及带来的额外数据
 */

import {ADD,DEL,CHANGE} from './actionType'

//仓库一开始默认的数据
let defaultState ={
    list:[
        {
            content: '学习',
            status: 'false'
          },
          {
            content: '复习',
            status: 'false'
          },
          {
            content: '玩游戏',
            status: 'false'
          },
          {
            content: '听歌',
            status: 'false'
          }
    ]
}

export  function todoReducer(state=defaultState, action) {
    //有了描述对象以后 我就可以根据旧的状态 计算出新的状态 并返回
    switch(action.type){
      case ADD:{
        //新增操作
        const arr = [...state.list]
        arr.push({
            content:action.data,
            status:false
        })
        return {list:arr}
      }
      case DEL:{
        //删除操作
        const arr = [...state.list]
        arr.splice(action.data,1)
        return {list:arr}
      }
      case CHANGE:{
        //修改操作
        const arr = [...state.list]
        arr[action.data].status = !arr[action.data].status
        return {list:arr}
      }
      default:return state;
    }
}